<?php 
	include_once $_SERVER["DOCUMENT_ROOT"].'/outils/parameters/ParameterGetter.php';
	include_once $_SERVER["DOCUMENT_ROOT"].'/outils/exceptions/FormulaireException.php';
	include_once $_SERVER["DOCUMENT_ROOT"].'/outils/writerJSON/WriterJSON.php';
	include_once $_SERVER["DOCUMENT_ROOT"].'/outils/string/StringUtils.php';
	include_once $_SERVER["DOCUMENT_ROOT"].'/service/uc/concert/GererConcertService.php';
	include_once $_SERVER["DOCUMENT_ROOT"].'/web/autregroupe/AutreGroupeViewHelper.php';

	class GererConcertAction {
		public static function ajouter() {
			$concertEntite = GererConcertService::ajouterConcert();
			ParameterGetter::setSessionParameter("concertEntite", $concertEntite);
			WriterJSON::echoSuccessState();
		}
		
		public static function modifier() {
			$concertEntite = GererConcertAction::putConcertEnSession();
			WriterJSON::echoDonnees(array(
				"lieu" => $concertEntite->lieu, 
				"date" => $concertEntite->date, 
				"heure" => $concertEntite->heure, 
				"prix" => $concertEntite->prix, 
				"description" => $concertEntite->description));
		}
		
		public static function getIdModifie() {
			$concertEntite = ParameterGetter::getSessionParameter("concertEntite", true);
			$id = $concertEntite->id;
			WriterJSON::echoDonnees (array("id" => "$id"));
		}
		
		public static function valider() {
			$concertEntite = ParameterGetter::getSessionParameter("concertEntite", true);
			$concertEntite->lieu = ParameterGetter::getRequestParameter("lieu", true);
			$concertEntite->date = ParameterGetter::getRequestParameter("date", true);
			$concertEntite->heure = ParameterGetter::getRequestParameter("heure", true);
			$concertEntite->prix = ParameterGetter::getRequestParameter("prix", true);
			$concertEntite->description = ParameterGetter::getRequestParameter("description", true);
			
			GererConcertAction::verifierConcertAvantValidation($concertEntite);
			GererConcertService::validerConcert($concertEntite);
			ParameterGetter::removeSessionParameter("concertEntite");
			WriterJSON::echoSuccess ("Le concert a bien été ajouté/modifié");
		}
		
		public static function annuler() {
			ParameterGetter::removeSessionParameter("concertEntite");
			WriterJSON::echoSuccessState();
		}
		
		public static function supprimer() {
			$id = ParameterGetter::getRequestParameter("id", true);
			GererConcertService::supprimerConcert($id);
			WriterJSON::echoSuccess ("Le concert a bien été supprimé");
		}
		
		public static function getListeAutreGroupeDisponible() {
			$listeAutreGroupeDisponible = GererConcertService::getListeAutreGroupeDisponible();
			$listeDonnees;
			foreach ($listeAutreGroupeDisponible as $i => $autreGroupe) {
				$listeDonnees[$autreGroupe->id] = $autreGroupe->nom;
			}
			WriterJSON::echoDonnees($listeDonnees);
		}
		
		public static function ajouterGroupeAConcert() {
			$idGroupe = ParameterGetter::getRequestParameter("id", true);
			$autreGroupeEntite = GererConcertService::getAutreGroupeByID($idGroupe); 
			
			$concertEntite = ParameterGetter::getSessionParameter("concertEntite", true);
			$concertEntite->autresGroupes[] = $autreGroupeEntite;
			ParameterGetter::setSessionParameter("concertEntite", $concertEntite);
			WriterJSON::echoSuccessState();
		}
		
		public static function supprimerGroupeAConcert() {
			$idGroupe = ParameterGetter::getRequestParameter("id", true);
			
			$concertEntite = ParameterGetter::getSessionParameter("concertEntite", true);
			foreach ($concertEntite->autresGroupes as $i => $autreGroupe) {
				if ($idGroupe == $autreGroupe->id) {
					unset ($concertEntite->autresGroupes[$i]);
				}
			}
			ParameterGetter::setSessionParameter("concertEntite", $concertEntite);
			WriterJSON::echoSuccessState();
		}
		
		public static function getListeAutreGroupeLie() {
			$concertEntite = ParameterGetter::getSessionParameter("concertEntite", true);
			$groupeTrouve = false;
			foreach ($concertEntite->autresGroupes as $i => $autreGroupeEntite) {
				$listeDonnees[$autreGroupeEntite->id] = AutreGroupeViewHelper::getAffichageListe($autreGroupeEntite);
				$groupeTrouve = true;
			}
			if ($groupeTrouve) {
				WriterJSON::echoDonnees($listeDonnees);
			} else {
				WriterJSON::echoSuccessState();
			}
		}
		
		public static function linkWithConcertIfExists() {
			$idConcert = ParameterGetter::getRequestParameter("idConcert", true);
			$idAlbumPhoto = ParameterGetter::getRequestParameter("idAlbumPhoto", true);
			GererConcertService::linkWithConcertIfExists($idConcert, $idAlbumPhoto);
			WriterJSON::echoSuccessState();
		}

		/*public static function isAlbumLieAUnConcert($idAlbumPhoto) {
				return GererConcertService::isAlbumLieAUnConcert($idAlbumPhoto);
		}*/
		
		public static function putConcertEnSession() {
			$id = ParameterGetter::getRequestParameter("id", true);
			$concertEntite = GererConcertService::modifierConcert($id);
			ParameterGetter::setSessionParameter("concertEntite", $concertEntite);	
			return $concertEntite;
		}
		
		private static function verifierConcertAvantValidation($concertEntite) {
			$exception = new FormulaireException();
			if (StringUtils::isEmpty($concertEntite->lieu)) {
				$exception->ajouterChampNonRenseigne("Lieu");
			}
			if (StringUtils::isEmpty($concertEntite->date)) {
				$exception->ajouterChampNonRenseigne("Date");
			}
			if ($exception->contientErreurs()) {
				throw $exception;
			}
		}
	}
?>